package 贪心andDp;

import java.util.Arrays;
import java.util.Scanner;

public class _04区间选点问题 {
    /**
     * 给定n个闭合整数区间[ai，bi]和n个整数c1
     * 编写一个程序：
     * 读取区间数、区间起点、终点和整数c1
     * 计算至少具有间隔为[ai，bi]的ci公共元素的整数集合Z的最小大小，对于每个i=1,2，。。。
     * 将答案写入标准输出。
     * 输入
     * 输入的第一行包含一个整数n（1<=n<=50000）——区间数。
     * 以下n行描述了间隔。输入的（i+1）行包含三个整数ai，
     * 由单个空格分隔的bi和ci，使得0<=ai<=bi<=50000和1<=ci<=bi-ai+1。
     * 输出
     * 输出正好包含一个等于集合Z最小大小的整数
     * 对于每个i=1,2，…，至少共享间隔为[ai，bi]的ci元素，。。。
     * 样本输入
     * 5
     * 3 7 3
     * 8 10 3
     * 6 8 1
     * 1 3 1
     * 10 11 1
     * 样本输出
     * 6
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        Interval[] intervals = new Interval[n];
        for (int i = 0; i < n; i++) {
            intervals[i] = new Interval(sc.nextInt(), sc.nextInt(), sc.nextInt());
        }
        Arrays.sort(intervals);  //按区间右端点排序
        int max = intervals[n - 1].t;//右端最大值
        int[] axis = new int[max + 1];//标记数轴上的点是否已经被选中
        for (int i = 0; i < n; i++) {
            int s = intervals[i].s;
            int t = intervals[i].t;
            int cnt = sum(axis, s, t);//找到这个区间已经选点的数量，sums[t] - sums[s - 1],如果不够，从区间右端开始标记，遇标记过的就跳过
            intervals[i].c -= cnt; //还需要加几个点
            while (intervals[i].c > 0) {
                if (axis[t] == 0) {//从区间终点开始选点
                    axis[t] = 1;
                    intervals[i].c--;//进一步减少需要新增的点的数量
                    t--;
                } else {//这个点已经被选过了
                    t--;
                }
            }
        }
        System.out.println(sum(axis, 0, max));
    }

    /**
     * 找到某一个区间中已经有多少个点被选中
     *
     * @param axis
     * @param s
     * @param t
     * @return
     */
    public static int sum(int[] axis, int s, int t) {
        int sum = 0;
        for (int i = s; i <= t; i++) {
            sum += axis[i];
        }
        return sum;
    }

    public static class Interval implements Comparable<Interval> {
        int s;
        int t;
        int c;

        public Interval(int s, int t, int c) {
            this.s = s;
            this.t = t;
            this.c = c;
        }

        @Override
        public int compareTo(Interval o) {
            int x = this.t - o.t;
            if ((x == 0)) {
                return this.s - o.s;
            } else {
                return x;
            }
        }
    }
}
